using System;
using System.Linq;
using System.Data.Objects;
using System.Data.Objects.DataClasses;
using System.ComponentModel;
using System.Runtime.Serialization;
using System.Collections.Generic;
using Acme.Northwind.EFDAL.Interfaces.Entity;

namespace Acme.Northwind.EFDAL.Interfaces
{
	#region Entity Context

	/// <summary>
	/// There are no comments for NorthwindEntities in the schema.
	/// </summary>
	public partial interface INorthwindEntities : nHydrate.EFCore.DataAccess.IContext, System.IDisposable
	{
		/// <summary>
		/// There are no comments for Category in the schema.
		/// </summary>
		IObjectSet<Acme.Northwind.EFDAL.Interfaces.Entity.ICategory> Category { get ; }

		/// <summary>
		/// There are no comments for Customer in the schema.
		/// </summary>
		IObjectSet<Acme.Northwind.EFDAL.Interfaces.Entity.ICustomer> Customer { get ; }

		/// <summary>
		/// There are no comments for CustomerCustomerDemo in the schema.
		/// </summary>
		IObjectSet<Acme.Northwind.EFDAL.Interfaces.Entity.ICustomerCustomerDemo> CustomerCustomerDemo { get ; }

		/// <summary>
		/// There are no comments for CustomerDemographic in the schema.
		/// </summary>
		IObjectSet<Acme.Northwind.EFDAL.Interfaces.Entity.ICustomerDemographic> CustomerDemographic { get ; }

		/// <summary>
		/// There are no comments for Employee in the schema.
		/// </summary>
		IObjectSet<Acme.Northwind.EFDAL.Interfaces.Entity.IEmployee> Employee { get ; }

		/// <summary>
		/// There are no comments for EmployeeTerritorie in the schema.
		/// </summary>
		IObjectSet<Acme.Northwind.EFDAL.Interfaces.Entity.IEmployeeTerritorie> EmployeeTerritorie { get ; }

		/// <summary>
		/// There are no comments for Order in the schema.
		/// </summary>
		IObjectSet<Acme.Northwind.EFDAL.Interfaces.Entity.IOrder> Order { get ; }

		/// <summary>
		/// There are no comments for OrderDetail in the schema.
		/// </summary>
		IObjectSet<Acme.Northwind.EFDAL.Interfaces.Entity.IOrderDetail> OrderDetail { get ; }

		/// <summary>
		/// There are no comments for Product in the schema.
		/// </summary>
		IObjectSet<Acme.Northwind.EFDAL.Interfaces.Entity.IProduct> Product { get ; }

		/// <summary>
		/// There are no comments for Region in the schema.
		/// </summary>
		IObjectSet<Acme.Northwind.EFDAL.Interfaces.Entity.IRegion> Region { get ; }

		/// <summary>
		/// There are no comments for Shipper in the schema.
		/// </summary>
		IObjectSet<Acme.Northwind.EFDAL.Interfaces.Entity.IShipper> Shipper { get ; }

		/// <summary>
		/// There are no comments for Supplier in the schema.
		/// </summary>
		IObjectSet<Acme.Northwind.EFDAL.Interfaces.Entity.ISupplier> Supplier { get ; }

		/// <summary>
		/// There are no comments for Territory in the schema.
		/// </summary>
		IObjectSet<Acme.Northwind.EFDAL.Interfaces.Entity.ITerritory> Territory { get ; }

		#region AddItem Method

		/// <summary>
		/// Adds an object to the object context.
		/// </summary>
		void AddItem(nHydrate.EFCore.DataAccess.IBusinessObject entity);

		/// <summary>
		/// Adds an object to the object context.
		/// </summary>
		void AddItem(Acme.Northwind.EFDAL.Interfaces.Entity.ICategory entity);

		/// <summary>
		/// Adds an object to the object context.
		/// </summary>
		void AddItem(Acme.Northwind.EFDAL.Interfaces.Entity.ICustomer entity);

		/// <summary>
		/// Adds an object to the object context.
		/// </summary>
		void AddItem(Acme.Northwind.EFDAL.Interfaces.Entity.ICustomerCustomerDemo entity);

		/// <summary>
		/// Adds an object to the object context.
		/// </summary>
		void AddItem(Acme.Northwind.EFDAL.Interfaces.Entity.ICustomerDemographic entity);

		/// <summary>
		/// Adds an object to the object context.
		/// </summary>
		void AddItem(Acme.Northwind.EFDAL.Interfaces.Entity.IEmployee entity);

		/// <summary>
		/// Adds an object to the object context.
		/// </summary>
		void AddItem(Acme.Northwind.EFDAL.Interfaces.Entity.IEmployeeTerritorie entity);

		/// <summary>
		/// Adds an object to the object context.
		/// </summary>
		void AddItem(Acme.Northwind.EFDAL.Interfaces.Entity.IOrder entity);

		/// <summary>
		/// Adds an object to the object context.
		/// </summary>
		void AddItem(Acme.Northwind.EFDAL.Interfaces.Entity.IOrderDetail entity);

		/// <summary>
		/// Adds an object to the object context.
		/// </summary>
		void AddItem(Acme.Northwind.EFDAL.Interfaces.Entity.IProduct entity);

		/// <summary>
		/// Adds an object to the object context.
		/// </summary>
		void AddItem(Acme.Northwind.EFDAL.Interfaces.Entity.IRegion entity);

		/// <summary>
		/// Adds an object to the object context.
		/// </summary>
		void AddItem(Acme.Northwind.EFDAL.Interfaces.Entity.IShipper entity);

		/// <summary>
		/// Adds an object to the object context.
		/// </summary>
		void AddItem(Acme.Northwind.EFDAL.Interfaces.Entity.ISupplier entity);

		/// <summary>
		/// Adds an object to the object context.
		/// </summary>
		void AddItem(Acme.Northwind.EFDAL.Interfaces.Entity.ITerritory entity);

		#endregion

		#region DeleteItem Methods

		/// <summary>
		/// Marks an object for deletion.
		/// </summary>
		/// <param name="entity">An object that specifies the entity to delete. The object can be in any state except System.Data.EntityState.Detached.</param>
		void DeleteItem(nHydrate.EFCore.DataAccess.IBusinessObject entity);

		/// <summary>
		/// Marks an set of objects for deletion.
		/// </summary>
		/// <param name="entityList">A list of IBusinessObject objects to mark for deletion</param>
		void DeleteItem(IEnumerable<nHydrate.EFCore.DataAccess.IBusinessObject> entityList);

		#endregion

	}

	#endregion

}

